macOS是基于UNIX内核开发的,所以在连接Linux服务器有很大的优势,并不像是在 Windows 环境上还得依赖客户端软件去发起远程连接。但是macOS一般情况开发者还是需要使用 \<用户名>@\<IP地址> 这样的形式来登录连接,如果密码设置的是强密码,很复杂的话经常会出现登录失败这样的情况,这会让人头大影响工作效率。为了提高效率减少这类情况的发生,使用SSH Key登录更安全,配置好之后,确保私钥的安全下,可以不设置密码,实现免密登录,也更方便。
如果电脑有配置过 Git 的SSH key的话接下来这一步可以省略直接看后面:
创建密钥
在创建密钥的时候,可以定义加密类型和长度,具体可以参考ssh-keygen命令帮助。创建的过程中,首先会提示要保存的位置和文件名,再提示要给密钥加个密码,也可以直接回车不要密码。公钥和私钥默认保存这用户目录的/.ssh/文件夹下。默认情况下,id_rsa为私钥,id_rsa.pub为公钥。
远程服务器ssh设置
此时还是需要用用户名和密码登录远程Linux服务器。使用vi编辑 /etc/ssh/sshd_config 文件,先打开PubkeyAuthentication和PermitRootLogin,一般只要把这几个参数前面的#(注释符)删掉即可.
PubkeyAuthentication yes
PermitRootLogin yes
- 重启ssh服务
systemctl restart sshd.service
- 上传公钥到远程服务器
在macOS端操作以下命令,把公钥上传到远程服务器,会提示输入远程的Linux服务器的密码:
scp ~/.ssh/id_rsa.pub \<用户名>@\<ip地址>:/root/id_rsa.pub
- 在远程Linux服务器上,操作以下命令,把公钥追加到服务器ssh认证文件中:
cat /root/id_rsa.pub >> ~/.ssh/authorized_keys
如果没有authorized_keys这个文件,请到.ssh文件夹下创建一个,并把权限设置为600:
cat authorized_keys.
chmod 600 authorized_keys.
追加好后,如果要禁止用户名密码登录,再编辑/etc/ssh/sshd_config文件,把PasswordAuthentication设置为no,重启SSH服务。
好了,SSH Key登录已经设置完毕,如果没有设置密钥密码,直接这终端输入ssh root@IP即可登录远程服务器。如果该用户下没有公钥,则会提示Permission denied。